#include <stdio.h>

const int maxArray=21;
//最多行动可能性
const int maxStep=2; 
//移动方式
const int move[2][2]={{0,-1},{-1,0}};

void checkKz(int n,int m,_int64 array[maxArray][maxArray],int x,int y){
    if(x<0||y<0||x>=n||y>=m)
    {
        return;
    }
    array[x][y]=-1;
}

void printArray(int n,int m,_int64 array[maxArray][maxArray])
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            printf("%2d ",array[i][j]);
            
        }
        printf("\n");
    }
	printf("\n");
}


int main(){
    int n,m,x,y;
    _int64 array[maxArray][maxArray];
    //是否入队的标记
    int queueBj[maxArray][maxArray];
    int searchArray[maxArray*maxArray][2];
    
    
    scanf("%d %d %d %d",&n,&m,&x,&y);
    n++;
    m++;
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            queueBj[i][j]=0;
            array[i][j]=0;
            
        }
    }
    //标记控制点
    checkKz(n,m,array,x,y);
    checkKz(n,m,array,x-2,y-1);
    checkKz(n,m,array,x-1,y-2);
 
    checkKz(n,m,array,x-2,y+1);
    checkKz(n,m,array,x-1,y+2);
    checkKz(n,m,array,x+2,y-1);
    checkKz(n,m,array,x+1,y-2);
    checkKz(n,m,array,x+2,y+1);
    checkKz(n,m,array,x+1,y+2);

    int start=0,end=1;
    searchArray[0][0]=n-1;
    searchArray[0][1]=m-1;
    array[n-1][m-1]=1;
    while(start!=end)
    {
        int s=start,e=end;
        for(i=s;i<e;i++)
        {
            for(j=0;j<maxStep;j++)
            {
                int nowx=searchArray[i][0];
                int nowy=searchArray[i][1];
                int nextx=nowx+move[j][0];
                int nexty=nowy+move[j][1];
                if(nextx>=0&&nexty>=0&&array[nextx][nexty]>=0)
                {
                    
                    //等于0表示
                    if(queueBj[nextx][nexty]==0)
                    {
                        searchArray[end][0]=nextx;
                        searchArray[end][1]=nexty;
                        end++;
                        queueBj[nextx][nexty]=1;
                    }
                    array[nextx][nexty]+=array[nowx][nowy];
                   
                }
            }
        }
        start=e;
        //printArray(n,m,array);
    }


    printf("%d\n",array[0][0]);
    return 0;
}